/*
 * Author: 李波(Edwin Lee)
 * Date: 2024-08-15 08:30:00
 * FilePath: /mprpc/example/caller/calluserservice.cc
 * LastEditTime: 2024-08-19 07:04:42
 * version: 1.0
 * Description:  远程过程函数调用的调用方（消费者）,测试
 */
#include "mprpcapplication.h"
#include "user.pb.h"
#include "mprpcchannel.h"
#include <iostream>


int main(int argc,char** argv)
{
    // 整个程序启动以后，想使用mprpc框架来享受rpc服务调用，一定需要先调用框架的初始化函数（只初始化一次）
    MprpcApplication::init(argc,argv);

    // 调用远程发布的rpc方法Login
    fixbug::UserServiceRpc_Stub stub(new MprpcChannel());
    // rpc方法的请求参数
    fixbug::LoginRequest request;
    request.set_name("zhang san");
    request.set_pwd("123456");
    fixbug::LoginResponse response;
    // 发起rpc方法的调用，同步的rpc调用过程，MprpcChannel::callmethod
    stub.Login(nullptr,&request,&response,nullptr);

    // 一次rpc调用完成，读调用的结果
    if(0 == response.result().errcode())
    {
        std::cout << "rpc login response sucess: " << response.sucess() << std::endl;
    }
    else 
    {
        std::cout << "rpc login response error: " << response.result().errmsg() << std::endl;
    }

    // 调用远程发布的rpc方法Register
    fixbug::RegisterRequest regRequest;
    regRequest.set_id(999);
    regRequest.set_name("li si");
    regRequest.set_pwd("bbb111");
    fixbug::RegisterResponse regResponse;

    stub.Register(nullptr,&regRequest,&regResponse,nullptr);
    if(0 == regResponse.result().errcode())
    {
        std::cout << "rpc regster response sucess: " << regResponse.sucess() << std::endl;
    }
    else 
    {
        std::cout << "rpc regster response error: " << regResponse.result().errmsg() << std::endl;
    }
    return 0;
}